package cn.iocoder.yudao.module.exam.dal.dataobject.paper;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;

import javax.validation.constraints.NotNull;

/**
 * 试卷 DO
 *
 * @author 芋道源码
 */
@TableName("exam_paper")
@KeySequence("exam_paper_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PaperDO extends BaseDO {

    /**
     * 主键
     */
    @TableId
    private Long id;
    /**
     * 试卷名称
     */
    private String paperName;
    /**
     * 考试时长（分钟）
     */
    private Integer duration;
    /**
     * 版本号
     */
    private Integer version;
    /**
     * 试卷类型 1随机试卷 0固定出题
     */
    private Integer paperType;

    @Schema(description = "单选题数量")
    private Integer singleChoiceNum;

    @Schema(description = "多选题数量")
    private Integer multipleChoiceNum;

    @Schema(description = "判断题数量")
    private Integer trueFalseNum;

    @Schema(description = "简答题数量")
    private Integer shortAnswerNum;

    @Schema(description = "问答题数量")
    private Integer essayNum;

    @Schema(description = "简答题数量")
    private Integer fillNum;

    @Schema(description = "问答题数量")
    private Integer calculateNum;

    @Schema(description = "单选题分值")
    private BigDecimal singleChoiceScore;

    @Schema(description = "多选题不全选分值")
    private BigDecimal multipleChoicePartialScore;

    @Schema(description = "多选题全对分值")
    private BigDecimal multipleChoiceFullScore;

    @Schema(description = "判断题分值")
    private BigDecimal trueFalseScore;


    @Schema(description = "单选题总分分值")
    private BigDecimal singleChoiceTotalScore;

    @Schema(description = "多选题总分值")
    private BigDecimal multipleChoiceTotalScore;

    @Schema(description = "判断题总分值")
    private BigDecimal trueFalseTotalScore;

    @Schema(description = "填空题总分值")
    private BigDecimal fillTotalScore;

    @Schema(description = "简答题总分值")
    private BigDecimal shortAnswerTotalScore;

    @Schema(description = "问答题总分值")
    private BigDecimal essayTotalScore;

    @Schema(description = "计算题总分值")
    private BigDecimal calculateTotalScore;


    @Schema(description = "简单题目数量")
    private Integer easyNum;
    @Schema(description = "一般题目数量")
    private Integer commonNum;
    @Schema(description = "中等题目数量")
    private Integer mediumNum;
    @Schema(description = "困难题目数量")
    private Integer difficultNum;
    @Schema(description = "级难题目数量")
    private Integer extremelyDifficultNum;

    @Schema(description = "简单分值")
    private BigDecimal easyTotalScore;
    @Schema(description = "一般分值")
    private BigDecimal commonTotalScore;
    @Schema(description = "中等分值")
    private BigDecimal mediumTotalScore;
    @Schema(description = "困难分值")
    private BigDecimal difficultTotalScore;
    @Schema(description = "级难分值")
    private BigDecimal extremelyDifficultTotalScore;

    @Schema(description = "试卷总分", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer totalScore;

    @Schema(description = "及格线", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer passingScore;

    /**
     * 租户id
     */
    private Long tenantId;

}